home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Commun⁄Network / NetNews Sample Code ƒ / News src / bits.h < prev    next >
Text File  |  1990-10-14  |  946b  |  35 lines

  1. /*
  2.  * bitmap set/clear/test operations
  3.  * Copyright © Tom Bereiter, 1990
  4.  */
  5.  
  6. #define _H_bits
  7.  
  8. typedef unsigned long bitmap_t;
  9.  
  10. #define    BitsPerByte        8
  11. #define    BitsPerLong        32
  12.  
  13. #define LogBitsPerByte    3
  14. #define LogBitsPerLong    5
  15.  
  16. #define ALLONES            (bitmap_t)~0
  17.  
  18. /* set single bit */
  19. #define    Bset(bmp, bitnum) \
  20.     (*(bmp + (bitnum >> LogBitsPerLong)) |= 1L << (bitnum & (BitsPerLong-1)))
  21.  
  22. /* clear single bit */
  23. #define    Bclr(bmp, bitnum) \
  24.     (*(bmp + (bitnum >> LogBitsPerLong)) &= ~(1L << (bitnum & (BitsPerLong-1))))
  25.  
  26. /* test single bit */
  27. #define    Btst(bmp, bitnum) \
  28.     (*(bmp + (bitnum >> LogBitsPerLong)) & (1L << (bitnum & (BitsPerLong-1))))
  29.  
  30. extern bitmap_t *bmalloc(unsigned long n);
  31. extern    void    bfset(bitmap_t *, unsigned long, unsigned long);
  32. extern    void    bfclr(bitmap_t *, unsigned long, unsigned long);
  33. extern    unsigned long    bfffs(bitmap_t *, unsigned long, unsigned long);
  34. extern    unsigned long    bfffc(bitmap_t *, unsigned long, unsigned long);
  35.